Automatic Generation of Provably Correct Parallelizing Compilers
نویسندگان
چکیده
We show how parallelizing compilers can be automatically derived from denotational deenitions of programming languages. In our approach, the denotational deenition is expressed using deenite clause grammars (syntax speciication) and Horn Logic or Constraint Logic (semantic speciication). The conditions for executing two or more statements in parallel (e.g., GCD test, Banerjee test, or exact test) are included as part of the (parallel) denotational semantics of the language. Solutions of diophantine equations, needed for parallelizing DO loops, can be expressed in constraint logic as well, and are thus easily incorporated in our denotational framework. This parallel denotational speciication of the language is executable, and thus automatically yields a parallel interpreter. This interpreter can be partially evaluated w.r.t. a given program to obtain parallel compiled code. In addition, the various syntactic and semantic restructuring transformations that have been proposed to expose more parallelism in sequential programs can also be expressed in our denotational framework. Partial evaluation of a program w.r.t. this interpreter will result in parallel code that is specialized to a given architecture. Automatic derivation of these parallelizing compilers becomes possible because of use of Horn Logic, instead of the traditional-calculus, for expressing denotational semantics. The major advantage of our approach is that the parallelizing compilers derived are provably correct, since they are automatically generated from language speciications.
منابع مشابه
Machine-Independent Evaluation of Parallelizing Compilers
A method is presented for measuring the degree of success of a compiler at extracting implicit parallelism. The outcome of applying this method to evaluate a state-of-the-art par-allelizer, KAP/Concurrent, using the Perfect Benchmarks and a few linear-algebra routines indicates that there is much room for improvement in the current generation of parallelizing compilers.
متن کاملCode Generation in Automatic Parallelizers
Literature on automatic parallelization generally focuses on data dependency analysis but seldom on code generation. However, this topic is of the utmost importance: the par-allelism extracted by the compiler has both to be expressed in a high-level language, and to t target architectures. This paper describes a code generation scheme for parallelizing compilers.
متن کاملPolaris: Improving the Effectiveness of Parallelizing Compilers
It is the goal of the Polaris project to develop a new parallelizing compiler that will overcome limitations of current compilers. While current parallelizing compilers may succeed on small kernels, they often fail to extract any meaningful parallelism from large applications. After a study of application codes, it was concluded that by adding a few new techniques to current compilers, automati...
متن کاملSymbolic Program Analysis and Optimization for Parallelizing Compilers
A program ow analysis framework is proposed for parallelizing compilers. Within this framework, symbolic analysis is used as an abstract interpretation technique to solve many of the ow analysis problems in a uniied way. Some of these problems are constant propagation , global forward substitution, detection of loop invariant computations, and induction variable substitution. The solution space...
متن کاملEvaluation of Parallelizing Compilers
The recognition and exploitation of parallelism is a diicult problem for restructuring compilers. We present a method for evaluating the eeectiveness of parallelizing compilers in general and of speciic compiler techniques. We also report two groups of measurements that are the results of using this technique. One evaluates a commercially available parallelizer, KAP/Concurrent, and the other co...
متن کامل